package testing;

import static org.junit.Assert.*;
import java.util.Set;
import org.junit.Test;

import clases.Digrafo;

public class DigrafoTest
{
	@Test
	public void cantidadDeVecinos()
	{
		Digrafo digrafo = crearDigrafo();
		
		assertEquals(2, digrafo.getVecinos(0).size());
		assertEquals(0, digrafo.getVecinos(1).size());
		assertEquals(0, digrafo.getVecinos(2).size());
		assertEquals(2, digrafo.getVecinos(3).size());
	}

	@Test
	public void vecinosCorrectos()
	{
		Digrafo digrafo = crearDigrafo();

		Set<Digrafo.Arco> vecinosDe0 = digrafo.getVecinos(0);
		assertTrue( vecinosDe0.contains(new Digrafo.Arco(1, 10)) );
		assertTrue( vecinosDe0.contains(new Digrafo.Arco(2, 8)) );
		assertFalse( vecinosDe0.contains(new Digrafo.Arco(2, 4)) );
		assertFalse( vecinosDe0.contains(new Digrafo.Arco(0, 7)) );

		Set<Digrafo.Arco> vecinosDe3 = digrafo.getVecinos(3);
		assertTrue( vecinosDe3.contains(new Digrafo.Arco(0, 7)) );
		assertTrue( vecinosDe3.contains(new Digrafo.Arco(2, 4)) );
	}

	// Digrafo de ejemplo con cuatro nodos
	private Digrafo crearDigrafo()
	{
		Digrafo digrafo = new Digrafo(4);
		digrafo.setArco(0, 1, 10.0);
		digrafo.setArco(0, 2, 8.0);
		digrafo.setArco(3, 0, 7.0);
		digrafo.setArco(3, 2, 4.0);
		return digrafo;
	}
}
